const fs = require('fs/promises');
const { isArray } = require('lodash');
const path = require('path');

module.exports = {
  /**
   * 根据文件路径获取文件内容
  * @param {String} filePath 文件路径
  * @param {String} encoding 返回编码,默认utf8
  */
  async getFileContent(filePath, encoding = 'utf8') {
    try {
      return await fs.readFile(path.join(this.app.baseDir, filePath), encoding);
    } catch (error) {
      throw new Error(error);
    }
  },
  /**
   * 根据文件路径写入文件内容
  * @param filePath 文件路径
  * @param content 文件内容
  */
  async writeFileContent(filePath, content) {
    try {
      return await fs.writeFile(path.join(this.app.baseDir, filePath), content);
    } catch (error) {
      throw new Error(error);
    }
  },
  /**
   * 根据文件路径最加写入文件内容
  * @param filePath 文件路径
  * @param content 文件内容
  */
  async appendFileContent(filePath, content) {
    try {
      let file = await this.getFileContent(filePath);
      if (file && isArray(JSON.parse(file))) {
        file = JSON.parse(file);
      } else {
        file = [];
      }
      file.push(content);
      return await this.writeFileContent(filePath, JSON.stringify(file));
    } catch (error) {
      throw new Error(error);
    }
  },
};
